﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; 
using RESTServicesMov.Dominio;
using System.Data.SqlClient;
using System.Data;

namespace RESTServicesMov.Persistencia
{
    public class CentroProdDAO
    {
        public CentroProd ObtenerAlmacenProd(int centro, int produc)
        {

            CentroProd almacenProdEncontrado = null;
            string sql = "SELECT * FROM CENTRO_PRODUCTO WHERE idProducto=@prod AND idCentro=@cent";//cambiar

            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {

                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@prod", produc));
                    com.Parameters.Add(new SqlParameter("@cent", centro ));
                    
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {

                            almacenProdEncontrado = new CentroProd()
                            {
                                StockMin = int.Parse(resultado["StockMin"].ToString()),
                                StockMax = int.Parse(resultado["StockMax"].ToString()),
                                Stock = int.Parse(resultado["StockActual"].ToString()),
                                idCentro = int.Parse(resultado["idCentro"].ToString()),
                                idProducto = int.Parse(resultado["idProducto"].ToString())
                            };
                        }
                    }
                }
            }

            return almacenProdEncontrado;
        }

        public DataSet obtenersql(string sql)
        {
            SqlConnection sqlConn = new SqlConnection(ConexionBD.ObtenerCadena());
            SqlDataAdapter sqlAdapt = new SqlDataAdapter(sql, sqlConn);
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlAdapt);
            DataSet sqlSet = new DataSet();
            sqlAdapt.Fill(sqlSet);
            sqlAdapt.Dispose();
            sqlConn.Close();
            return sqlSet;
        }

        public List<CentroProd> ListarTodos()
        {
            List<CentroProd> ConsList = new List<CentroProd>();
            CentroProd consultaEncontrada = null;
            CentroDAO dao = new CentroDAO(); 
            MSProducto.ProductosClient proxy = new MSProducto.ProductosClient();
            //Centro centroEncontrado; 
            int idcentro;
            int idproducto;
            string sql = "SELECT * FROM CENTRO_PRODUCTO";
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                { 
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {

                        while (resultado.Read())
                        {
                            idcentro = int.Parse(resultado["idCentro"].ToString());
                            idproducto = int.Parse(resultado["idProducto"].ToString());
                            //centroEncontrado = dao.ObtenerCentro(idcentro);
                           // MSProducto.Producto productoin = proxy.ObtenerProducto(idproducto);

                            consultaEncontrada = new CentroProd()
                            {
                                idCentro = idcentro,
                                idProducto = idproducto,
                                //Producto = productoin,
                                //Centro = centroEncontrado,
                                Stock = int.Parse(resultado["StockActual"].ToString()),
                                StockMax = int.Parse(resultado["StockMax"].ToString()),
                                StockMin = int.Parse(resultado["StockMin"].ToString()) 
                            };
                            ConsList.Add(consultaEncontrada);
                        }
                    }
                }

            }

            return ConsList;
        }

        public CentroProd Crear(int centro, int producto, int stock, int stockMin, int stockMax)
        {
            CentroProd almacenProdCreada = null;
            string sql = "INSERT INTO CENTRO_PRODUCTO VALUES (@Producto, @Centro, @StockMin, @StockMax, @Stock)";// cambiar
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                        //com.Parameters.Add(new SqlParameter("@Stock", almacenProdACrear.Stock));
                        //com.Parameters.Add(new SqlParameter("@StockMax", almacenProdACrear.StockMax));
                        //com.Parameters.Add(new SqlParameter("@StockMin", almacenProdACrear.StockMin));
                        //com.Parameters.Add(new SqlParameter("@Producto", almacenProdACrear.idProducto));
                        //com.Parameters.Add(new SqlParameter("@Centro", almacenProdACrear.idCentro));
                    com.Parameters.Add(new SqlParameter("@Stock", stock));
                    com.Parameters.Add(new SqlParameter("@StockMax", stockMax));
                    com.Parameters.Add(new SqlParameter("@StockMin", stockMin));
                    com.Parameters.Add(new SqlParameter("@Producto", producto));
                    com.Parameters.Add(new SqlParameter("@Centro", centro));
                    com.ExecuteNonQuery();

                }
            }
            almacenProdCreada = ObtenerAlmacenProd(centro, producto);
            return almacenProdCreada;
        }

        public CentroProd Modificar(CentroProd almacenProdAModificar)
        {
            CentroProd almacenProdModificado = null;
            string sql = "UPDATE CENTRO_PRODUCTO SET StockActual=@Stock, StockMax=@StockMax, StockMin=@StockMin WHERE idProducto=@idProducto idCentro=@idCentro";// cambiar
            using (SqlConnection con = new SqlConnection(ConexionBD.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@Stock", almacenProdAModificar.Stock));
                    com.Parameters.Add(new SqlParameter("@StockMax", almacenProdAModificar.StockMax));
                    com.Parameters.Add(new SqlParameter("@StockMin", almacenProdAModificar.StockMin));
                    com.Parameters.Add(new SqlParameter("@idProducto", almacenProdAModificar.idProducto));
                    com.Parameters.Add(new SqlParameter("@idCentro", almacenProdAModificar.idCentro));
                    com.ExecuteNonQuery();
                }
                con.Close();
            }
            almacenProdModificado = ObtenerAlmacenProd(almacenProdAModificar.idCentro, almacenProdAModificar.idProducto);
            return almacenProdModificado;
        }
    }
}